// pages/cart/cart.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    list:[],
    flag: wx.getStorageSync('qx') ||false,
    arr:wx.getStorageSync('arr') ||0  , //总价
    num:wx.getStorageSync('num')  ||0,
    Address:{}  // 收货地址
    
  },
  // 封装存储本地的方法
  // 存到本地
  cun(){
    wx.setStorageSync('gwc', this.data.list)
  },
    // 取出
    getlist(){
      let gwc=wx.getStorageSync('gwc')
     this.setData({
        list : gwc
      })
    },
    // 全选
    onChange(e){
      // 当前的方法函数回调
      let flagone=e.detail
      // 对全选的状态赋值
      this.setData({
        flag:flagone
      })
      console.log(this.data.flag);
      // 在循环遍历给本地存储中的数据flag更新状态
      this.data.list.forEach((item)=>{
       item.flag=this.data.flag
      })
      //  把当前的最新状态 保存到本地 因为页面中循环遍历的是本地存储中的数据
      this.cun()
      //  要想更新到视图当中 必须双向绑定重新对 循环便利的数组 
      this.getlist()
      // 把全选状态存储到本地
      wx.setStorageSync('qx', this.data.flag)
    },
    //  单选
    change(e){
      // 当前的方法函数回调 获取后台数据当中的状态
      let index=e.target.dataset.index
      // console.log(index);
      // 当前选中的状态取反 可以随意切换
      this.data.list[index].flag=!this.data.list[index].flag
      // 定义true和false的状态
      var flagthree=true
      var flagfour=false
      var arr=[]  /*  已选中为true的数组 */
       this.data.list.forEach(item=>{
        //  console.log(item);
        // 如果当前选中的状态为ture 就把他放进定义的空数组当中
        if(item.flag==true){
          arr.push(item)
        }
       })
       console.log(arr.length);
      //  如果选中的长度等于总数居的长度就让全选选中否则没有选中
       if(this.data.list.length==arr.length){
        this.setData({
          flag:flagthree
        })
       }else{
        this.setData({
          flag:flagfour
        })
       }
      this.cun()
      this.getlist()
      this.hj()
        // 把全选状态存储到本地
        wx.setStorageSync('qx', this.data.flag)
    },
 //步进器加检操作
 bujin(e){
   console.log(e);
  console.log(e.detail); // 当前点击的值 vant中的回调
  var num = e.detail   //获取到
  var index = e.target.dataset.index  // 获取当前点击商品的下标
 this.data.list[index].goods_num = num
  this.cun()
  this.getlist()
  this.hj()
 },
 
 // 合计
 hj(){
  // 按钮点击事件回调
  var arr = 0
  var num =0   //商品数量
  this.data.list.forEach(item=>{
    if(item.flag == true){
      arr+= item.goods_price * item.goods_num
      num += item.goods_num
    }
  })
  arr= Number(arr +'00')
  wx.setStorageSync('arr', arr)
  wx.setStorageSync('num', num)
  this.setData({
    arr : wx.getStorageSync('arr'),
    num : wx.getStorageSync('num')
  })
  // console.log(arr);
 },

//  选择地址
dizhi(){
  var that=this
  wx.getSetting({
    success (res) {
      console.log(res.authSetting['scope.address'])
      if(res.authSetting['scope.address']==true){
       wx.chooseAddress({
        success (resone) {
         console.log(resone);
         //要拼接的字符串
         let address={}
         address.dizhi=resone.provinceName+resone.cityName+resone.countyName+resone.      detailInfo
         console.log(address.dizhi);
         address.name=resone.userName
         address.telNumber=resone.telNumber
         wx.setStorageSync('name',address)
         // 本地存储自己的收获地址
         that.setData({
           Address:wx.getStorageSync('name')
         })
         console.log(that.data.Address);
        }
      })
      }
    }
  })
},

// 点击提交订单按钮 
// 首先需要判断收货地址和购物车当中是否有选中的值
onClickButton(){
 const {Address,arr} = this.data
//  首先判断用户是否选择收货地址 ！取相反值就是没有选中 就提示
 if(!Address.name){
   wx.showToast({
     title: '您还没有选择收货地址',
   })
   return
 }
//  判断购物车中的商品是否被选中 arr===0就是没有选中商品
if(arr===0){
  wx.showToast({
    title: '您还没有选择商品',
  })
  return
}
//如果都选中了 跳转到支付页面
wx.navigateTo({
  url: '../pay/pay',
})

},

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // console.log('list',this.data.list);
  // this.getlist() //不能在onload中调用 会导致视图没有及时更新，需要在onShow中调用
  },



  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  this.getlist()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})